#Montando dataset
import_data("jennifer_lawrence")
## Loading required package: rvest
## Loading required package: xml2
##
## Attaching package: 'rvest'
## The following object is masked from 'package:purrr':
##
## pluck
## The following object is masked from 'package:readr':
##
## guess_encoding
#Importando Dataset
filmes = read_imported_data() %>%
glimpse()
## Observations: 18
## Variables: 5
## $ avaliacao <int> 46, 69, 31, 47, 100, 60, 70, 68, 90, 92, 89, 92, 11, …
## $ filme <chr> "Red Sparrow", "mother!", "Passengers", "X-Men: Apoca…
## $ papel <chr> "Dominika Egorova", "Mother", "Aurora Lane", "Raven/M…
## $ bilheteria <dbl> 17.1, 17.3, 100.1, 135.8, 7.5, 42.6, 254.7, 295.5, 19…
## $ ano <int> 2018, 2017, 2016, 2016, 2016, 2015, 2015, 2014, 2014,…
Jennifer Lawrence é uma atriz norte-america que nasceu em Louisville no estado do Kentucky. Nascida em 1990 (28 anos) a atriz já ganhou diversos prêmios, inclusive dois Orcars.
p <- plot_ly(filmes, x = ~ano, y = ~bilheteria, type = 'pointcloud',
text = ~paste('Filme: ', filme, "\nAvalicao: ", avaliacao, "\nBilheteria: ", bilheteria, "\nAno:", ano)) %>%
layout(title = "Linha do tempo: Carreira da Jennifer",
xaxis = list(title = "Avaliação", tickangle = -45),
yaxis = list(title = "Bilheteria"))
p
Passe o mouse sobre os pontos para visualizar mais informações sobre os filmes.
Na visualização acima podemos ver que Jennifer começou sua carreira em 2010 com o filme Winter’s Bone, pelo qual recebeu nomeações para o Oscar, Globo de Ouro, Satellite Award, Independent Spirit Award e Screen Actors Guild Award de Melhor Atriz. Suas melhores bilheterias foram com os filmes das sagas Jogos Vorazes e X-men. O último filme no qual participou foi ‘Red Sparrow’ em 2018.
Jennifer alcançou o reconhecimento internacional através de suas atuações como a mutante azul Mística e a heroína Katniss Everdeen nas franquias X-Men e The Hunger Games, respectivamente.
Em 2012 aos 22 anos, seu desempenho como a ninfomaníaca Tiffany Maxwel na comédia romântica Silver Linings Playbook rendeu-lhe seu primeiro Oscar de melhor atriz.
Para realizarmos agrupamentos e assim categorizarmos os filmes da atriz precisamos normalizar os dados, irei normalizar bilheteria e avaliação que são os dados mais discrepantes. Foi utilizado o ‘log’ nos dados de bilheteria já que são valores bem diferentes e grandes.
filmes_transformado = filmes %>%
mutate(avaliacao = as.vector(scale(avaliacao)),
bilheteria = as.vector(scale(log(bilheteria))))
Vamos agora agrupar os filmes em que Jennifer apareceu: Primeiramente iremos precisar descobrir em quantos grupos devemos realizar o agrumamento. Vamos calcular a estatistíca GAP que irá auxiliar na escolha.
plot_clusgap = function(clusgap, title = "Gap Statistic calculation results") {
require("ggplot2")
gstab = data.frame(clusgap$Tab, k = 1:nrow(clusgap$Tab))
p = ggplot(gstab, aes(k, gap)) + geom_line() + geom_point(size = 5)
p = p + geom_errorbar(aes(ymax = gap + SE.sim, ymin = gap - SE.sim), width = .2)
p = p + ggtitle(title)
return(p)
}
gaps <- filmes_transformado %>%
select(bilheteria, avaliacao) %>%
clusGap(FUN = kmeans, nstart = 20, K.max = 7, B = 200)
plot_clusgap(gaps)
Olhando o gráfico acima podemos perceber que o GAP esta propondo que o melhor valor para o agrupamento é 7 ou 3.
Agrupamento com 3 não parece ser muito expressivo. Os grupos parecem muito amplos
set.seed(12345)
n_clusters = 3
# O agrupamento de fato:
km = filmes_transformado %>%
select(bilheteria, avaliacao) %>%
kmeans(centers = n_clusters, nstart = 20)
agrupado = km %>%
augment(filmes_transformado)
agrupado %>%
ggplot(aes(x = avaliacao, y = bilheteria, color = .cluster)) +
geom_point(size = 2)
O agrupamento com 7 parece fazer mais sentido e parece melhor agrupar os filmes
set.seed(12345)
n_clusters = 7
# O agrupamento de fato:
km = filmes_transformado %>%
select(bilheteria, avaliacao) %>%
kmeans(centers = n_clusters, nstart = 20)
agrupado = km %>%
augment(filmes_transformado)
Cluster interativo, passe o mouse sobre os pontos para ver informações sobre o filme.
p <- plot_ly(agrupado, x = ~avaliacao, y = ~bilheteria, color=~.cluster, type = 'pointcloud',
text = ~paste('Filme: ', filme, "\nAvalicao: ", avaliacao, "\nBilheteria: ", bilheteria, "\nAno:", ano)) %>%
layout(title = "Clusters",
xaxis = list(title = "Avaliação", tickangle = -45),
yaxis = list(title = "Bilheteria"))
p
Visualizando os grupos através de polígonos
ggscatter(agrupado, x="avaliacao", y="bilheteria", color=".cluster")+
stat_chull(aes(fill = .cluster), alpha=0.3, geom="polygon")+
xlab("Avaliação")+
ylab("Bilheteria")